Exemplary embodiments relate to resource management, and more specifically, to rapidly determining fragmentation in computing environments.
Utility computing delivers compute and storage resources to applications as an ‘on-demand utility’, similar to an electricity grid. The utility computing model is enabled by distributed collections of compute and storage resources spread over a local or a wide area network, i.e., networked utilities. Example applications include scientific workflows running on computational grids and multi-tier web services (e.g., ecommerce websites) operating in data centers. The utility setting also offers several benefits to database applications such as reduced infrastructure and management costs, higher resource utilization, and the ability to allocate resources on-demand to support dynamically changing demands.
Virtual machine (VM) technology offers powerful mechanisms for efficient management of networked utilities. After a decade of advances in VMs, robust and efficient VM systems are widely available and are fast becoming ubiquitous. The leading VM systems support live migration, checkpoint/restart, and fine-grained allocation of server resources as a measured and metered quantity. These capabilities create a rich decision space for utility resource management such as how an intelligent infrastructure should “turn the knobs” to map workload and resource requests onto a server network.
Intelligent provisioning of VMs is necessary to meet system performance goals such as meeting application Service Level Agreements (SLAs), optimizing application execution time, and maximizing overall resource usage. However, provisioning VMs to meet such goals may be considered challenging because application behavior is dictated by the interaction of several factors such as resources, data, and workload. Resources refer to the number of VMs assigned to the application, and the properties of the underlying resources bound to each VM (e.g., central processing unit, memory, storage, and network resources). The characteristics of the data that the application processes, including the input data size, data layout and partitioning on the storage server may also have an impact on application behavior. Examples of workload characteristics seen by the application and dictating application behavior include a request arrival rate and service demand of each request.